package main

import (
	"fmt"
	"math/rand"
	"sort"
	"time"
)

// 数字重复统计
// 随机产生100个整数
// 数字的范围[-100, 100]
// 降序输出这些生成的数字并打印其重复的次数
func main() {
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	rSlice := make([]int, 0, 100)
	rMap := make(map[int]int, 100)

	for i := 0; i < 100; i++ {
		num := r.Intn(201) - 100
		rSlice = append(rSlice, num)
		rMap[num] += 1
	}

	// 降序
	sort.Sort(sort.Reverse(sort.IntSlice(rSlice)))

	// 重复值只打印一次
	printed := make(map[int]bool)
	for _, num := range rSlice {
		if !printed[num] {
			fmt.Printf("Number: %d, Count: %d\n", num, rMap[num])
			printed[num] = true
		}
	}
}
